#pragma once
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
#include<stdbool.h>

typedef int QueDataType;

typedef struct QueueNode
{
	QueDataType data;
	struct QueueNode* next;
}QueNode;

typedef struct Queue
{
	QueNode* head;
	QueNode* tail;
	int size;
}Que;

void InitQue(Que* p);

QueNode* BuyQueNode(QueDataType x);

void DestroyQue(Que* p);

bool EmptyQue(Que* p);

void PushQue(Que* p, QueDataType x);

void PopQue(Que* p);

int SizeQue(Que* p);

QueDataType FrontQue(Que* p);

QueDataType BackQue(Que* p);